﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DADOS.usuario
{
    public class metProntuario
    {
        DB_PROAD banco = new DB_PROAD();

        private void FecharConexao(object banco)
        {
            ((DB_PROAD)banco).Connection.Close();
        }

        private void InicializarConexao(object banco)
        {
            ((DB_PROAD)banco).Connection.Open();
        }

        /// <summary>
        /// Incluir Prontuario
        /// </summary>
        /// <param name="objProntuario"></param>
        public int Incluir(TB_PRONTUARIO objProntuario)
        {
            try
            {
                InicializarConexao(banco);
                banco.AddToTB_PRONTUARIO(objProntuario);
                AlterarClassificacaoFinal(objProntuario);
                banco.SaveChanges();
                return objProntuario.CO_PRONTUARIO;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }
        }

        /// <summary>
        /// Selecionar o último prontuário conforme código de usuário passado
        /// </summary>
        /// <param name="intCodUsuario">intCodUsuario</param>
        /// <returns>TB_PRONTUARIO</returns>
        public TB_PRONTUARIO SelecionarProntuario(int intCodUsuario)
        {
            try
            {
               

                InicializarConexao(banco);
                var objPront = banco.TB_PRONTUARIO.Where(q => q.CO_USUARIO == intCodUsuario).OrderByDescending(q => q.DT_INCLUSAO).FirstOrDefault();
                return objPront;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }
        }

        /// <summary>
        /// Selecionar o último prontuário conforme código de usuário passado
        /// </summary>
        /// <param name="intCodUsuario">intCodUsuario</param>
        /// <returns>TB_PRONTUARIO</returns>
        public List<TB_PRONTUARIO> SelecionarProntuarioRelatorio(int intCodUsuario, string dateIni, string dateFim)
        {
            try
            {
                DateTime DataInicial = DateTime.Now;
                DateTime DataFinal = DateTime.Now;
                DataFinal = Convert.ToDateTime(!string.IsNullOrEmpty(dateFim) ? dateFim : "25/12/2500");
                DataInicial = Convert.ToDateTime(!string.IsNullOrEmpty(dateIni) ? dateIni : "25/12/1900");

                InicializarConexao(banco);
                var objPront = banco.TB_PRONTUARIO.Where(q => q.CO_USUARIO == intCodUsuario && q.DT_INCLUSAO >= DataInicial && q.DT_INCLUSAO <= DataFinal).OrderByDescending(q => q.DT_INCLUSAO).ToList();
                return objPront;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }
        }

        public List<TB_PRESCRICAO_ENFERMEIRO> SelecionarPrescEnf(int intCodUsuario, string dateIni, string dateFim)
        {
            try
            {
                DateTime DataInicial = DateTime.Now;
                DateTime DataFinal = DateTime.Now;
                DataFinal = Convert.ToDateTime(!string.IsNullOrEmpty(dateFim) ? dateFim : "25/12/2500");
                DataInicial = Convert.ToDateTime(!string.IsNullOrEmpty(dateIni) ? dateIni : "25/12/1900");

                InicializarConexao(banco);
                var objPront = banco.TB_PRESCRICAO_ENFERMEIRO.Where(q => q.CO_PRONTUARIO == intCodUsuario && q.DT_INCLUSAO >= DataInicial && q.DT_INCLUSAO <= DataFinal).OrderByDescending(q => q.DT_INCLUSAO).ToList();
                return objPront;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                FecharConexao(banco);
            }
        }

        protected void AlterarClassificacaoFinal(TB_PRONTUARIO objPront)
        {
            try
            {
                var bd = new DB_PROAD();
                var objClasFinal = bd.TB_CLASSIFICACAO_FINAL.Where(q => q.CO_USUARIO == objPront.CO_USUARIO).FirstOrDefault();

                objClasFinal.NR_AD1_1 = objPront.NR_Q_AD1_1;
                objClasFinal.NR_AD1_2 = objPront.NR_Q_AD1_2;
                objClasFinal.NR_AD1_3 = objPront.NR_Q_AD1_3;

                objClasFinal.NR_AD2_1 = objPront.NR_Q_AD2_1;
                objClasFinal.NR_AD2_2 = objPront.NR_Q_AD2_2;
                objClasFinal.NR_AD2_3 = objPront.NR_Q_AD2_3;
                objClasFinal.NR_AD2_4 = objPront.NR_Q_AD2_4;
                objClasFinal.NR_AD2_5 = objPront.NR_Q_AD2_5;
                objClasFinal.NR_AD2_6 = objPront.NR_Q_AD2_6;
                objClasFinal.NR_AD2_7 = objPront.NR_Q_AD2_7;
                objClasFinal.NR_AD2_8 = objPront.NR_Q_AD2_8;
                objClasFinal.NR_AD2_9 = objPront.NR_Q_AD2_9;
                objClasFinal.NR_AD2_10 = objPront.NR_Q_AD2_10;
                objClasFinal.NR_AD2_11 = objPront.NR_Q_AD2_11;
                objClasFinal.NR_AD2_12 = objPront.NR_Q_AD2_12;
                objClasFinal.NR_AD2_13 = objPront.NR_Q_AD2_13;
                objClasFinal.NR_AD2_14 = objPront.NR_Q_AD2_14;

                objClasFinal.NR_AD3_1 = objPront.NR_Q_AD3_1;
                objClasFinal.NR_AD3_2 = objPront.NR_Q_AD3_2;
                objClasFinal.NR_AD3_3 = objPront.NR_Q_AD3_3;

                GravarLog(objClasFinal.CO_CLASSIFICACAO_FINAL, objPront.CO_PROFISSIONAL);

                bd.SaveChanges();

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                
            }
        }

        protected void GravarLog(int intCodClasFinal, int intCodProfissional)
        {
            try
            {
                var bd = new DB_PROAD();
                var objLog = new TB_CLASSIFICACAO_FINAL_LOG();
                objLog.CO_CLASSIFICACAO_FINAL = intCodClasFinal;
                objLog.CO_PROFISSIONAL = intCodProfissional;
                objLog.DT_ALTERACAO = DateTime.Now;
                bd.AddToTB_CLASSIFICACAO_FINAL_LOG(objLog);
                bd.SaveChanges();
                bd.Connection.Close();
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {

            }
        }
    }
}
